package xml;

import org.w3c.dom.Element;
import java.sql.Timestamp;
import dbConn.*;


/**
 * De klasse die alle info van de containers bevat
 * @author faceoff
 *
 */
public class Container {
	private DBConn db1;
	private int id;			// De id nummer van de container
	private int aankomstDag, aankomstMaand, aankomstJaar;
	private int vertrekDag, vertrekMaand, vertrekJaar;
	private String aankomstSoort, aankomstBedrijf;
	private String vertrekSoort, vertrekBedrijf;
	private Timestamp aanVan, aanTot; 
	private Timestamp verVan, verTot; 
//	String vertrekVanUur, vertrekVanMinuut;
//	String vertrekTotUur, vertrekTotMinuut;
	private String eigenaar, containerNR;
	private String gewichtLeeg, gewichtInhoud;
	private String iso;
	private Boolean afmeting; //True = 40" , False 20"
	private String inhoud, soort, gevaar; //gevaar niet nodig?
	private Element elem;
	
	/**
	 * 
	 * @param db DBConn
	 * @param elem  Element
	 */
	public Container (DBConn db, Element elem) {
		this(elem);
		this.db1 = db;
	}
	/**
	 * 
	 * @param elem
	 */
	private Container (Element elem) {
    	this.elem = elem;
    	setEigenschappen();
    	setAankomst();
    	setVertrek();
	}

	/**
	 * Stelt de eigenschappen van de Container in. 
	 */
	private void setEigenschappen() {
    	this.id = Integer.valueOf(elem.getAttribute("id").substring(2)).intValue();
    	this.eigenaar = elem.getChildNodes().item(3).getChildNodes().item(1).getTextContent();
    	this.containerNR = elem.getChildNodes().item(3).getChildNodes().item(3).getTextContent();
    	this.gewichtLeeg =  elem.getChildNodes().item(9).getChildNodes().item(1).getTextContent();
    	this.gewichtInhoud = elem.getChildNodes().item(9).getChildNodes().item(3).getTextContent();
    	
    	this.inhoud = elem.getChildNodes().item(11).getChildNodes().item(1).getTextContent();
    	this.soort = elem.getChildNodes().item(11).getChildNodes().item(3).getTextContent();
    	this.gevaar = elem.getChildNodes().item(11).getChildNodes().item(5).getTextContent();
    	this.iso = elem.getChildNodes().item(13).getTextContent(); 	
    	if ( ((elem.getChildNodes().item(7).getChildNodes().item(1).getTextContent()).toCharArray())[0] > (char) 3 ) 
    		this.afmeting = true;
    		else this.afmeting = false;
	}

	/**
	 * Zet de datum en informatie over de aankomst
	 */
	@SuppressWarnings("deprecation")
	private void setAankomst() {
		String aankomstVan,aankomstTot;
		this.aankomstDag = Integer.valueOf(elem.getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(1).getTextContent())-1;
    	this.aankomstMaand = Integer.valueOf(elem.getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(3).getTextContent())-1;
    	this.aankomstJaar = Integer.valueOf(elem.getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(5).getTextContent())+100;

    	aankomstVan = elem.getChildNodes().item(1).getChildNodes().item(3).getChildNodes().item(1).getTextContent();
    	aankomstTot = elem.getChildNodes().item(1).getChildNodes().item(3).getChildNodes().item(3).getTextContent();
    	int AVU = Integer.parseInt(aankomstVan.substring(0,aankomstVan.length()-3));
    	int AVM = Integer.parseInt(aankomstVan.substring(aankomstVan.length()-2,aankomstVan.length()));
    	int ATU = Integer.parseInt(aankomstTot.substring(0,aankomstTot.length()-3));
    	int ATM = Integer.parseInt(aankomstTot.substring(aankomstTot.length()-2,aankomstTot.length()));
   	  	this.aankomstSoort = elem.getChildNodes().item(1).getChildNodes().item(5).getTextContent();
    	this.aankomstBedrijf = elem.getChildNodes().item(1).getChildNodes().item(7).getTextContent(); 	

    	this.aanVan = new Timestamp(this.aankomstJaar,this.aankomstMaand,this.aankomstDag,AVU,AVM,0,0); 		
    	this.aanTot = new Timestamp(this.aankomstJaar,this.aankomstMaand,this.aankomstDag,ATU,ATM,0,0); 		
	}
 
	/**
	 *  Zet de datum en informatie over het vertrek.
	 */
	@SuppressWarnings("deprecation")
	private void setVertrek() {
		String vertrekVan,vertrekTot;
		vertrekDag = Integer.valueOf(elem.getChildNodes().item(5).getChildNodes().item(1).getChildNodes().item(1).getTextContent())-1;
    	vertrekMaand = Integer.valueOf(elem.getChildNodes().item(5).getChildNodes().item(1).getChildNodes().item(3).getTextContent())-1;
    	vertrekJaar = Integer.valueOf(elem.getChildNodes().item(5).getChildNodes().item(1).getChildNodes().item(5).getTextContent())+100;

    	vertrekVan = elem.getChildNodes().item(5).getChildNodes().item(3).getChildNodes().item(1).getTextContent();
    	vertrekTot = elem.getChildNodes().item(5).getChildNodes().item(3).getChildNodes().item(3).getTextContent();
    	int VVU = Integer.parseInt(vertrekVan.substring(0,vertrekVan.length()-3));
    	int VVM = Integer.parseInt(vertrekVan.substring(vertrekVan.length()-2,vertrekVan.length()));
    	int VTU = Integer.parseInt(vertrekTot.substring(0,vertrekTot.length()-3));
    	int VTM = Integer.parseInt(vertrekTot.substring(vertrekTot.length()-2,vertrekTot.length()));
   	  	this.vertrekSoort = elem.getChildNodes().item(5).getChildNodes().item(5).getTextContent();
    	this.vertrekBedrijf = elem.getChildNodes().item(5).getChildNodes().item(7).getTextContent(); 	

    	this.verVan = new Timestamp(this.vertrekJaar,this.vertrekMaand,this.vertrekDag,VVU,VVM,0,0); 		
    	this.verTot = new Timestamp(this.vertrekJaar,this.vertrekMaand,this.vertrekDag,VTU,VTM,0,0); 		
	}
	
	/**
	 * Voer de gegevens in in de database.
	 *  <br><br>
	 *  <b>Note: De coordinaten worden nog niet doorgegeven<b>
	 */
	public void toDatabase() {
		String dbQueryAankomst = "INSERT INTO AANKOMST " +
						" VALUES(" + this.id + ",'" + this.aanVan + "','" + this.aanTot + "','" +
						this.aankomstSoort.trim() + "','" + this.aankomstBedrijf + "',0,0,0)";
		String dbQueryVertrek = "INSERT INTO VERTREK " +
						" VALUES(" + this.id + ",'" + this.verVan + "','" + this.verTot + "','" + 
						this.vertrekSoort.trim() + "','" + this.vertrekBedrijf + "')";
		String dbQueryEigenschappen = "INSERT INTO CONTAINER " +
						" VALUES(" + this.id + ",'" + this.eigenaar + "'," + this.containerNR + "," + 
						this.gewichtLeeg + "," + this.gewichtInhoud + ",'" + this.inhoud + "','" +
						this.soort + "','" + this.gevaar + "','" + this.iso + "'," + this.afmeting +")";   
		db1.execQuery(dbQueryAankomst);
		db1.execQuery(dbQueryVertrek);
//		db1.execQuery(dbQueryEigenschappen);
		System.out.println(this.id + " In de DB gezet! TENZIJ HET GECOMMENT IS ;)" );
	}
	
}
